.. :validated: 3.0.0

Резервное копирование подсистем ALD Pro
---------------------------------------

Резервное копирование
~~~~~~~~~~~~~~~~~~~~~

Резервирование и восстановление с помощью скриптов не является рекомендацией в распределенных системах и может не обеспечить полной согласованности данных в работающей инфраструктуре 24/7, а является дополнением на случай форс-мажорной ситуации, когда восстановление данных и работу инфраструктуры невозможно возобновить с помощью реплик и снапшотов.

Резервное копирование (далее - бэкапирование).

* Раздел состоит из перечня скриптов резервного копирования каждой подсистемы (сервера).
* Требования к последовательности запуска скриптов отсутствуют.
* Допустимо выборочное резервное копирование подсистем (серверов).
* Резервные копии необходимо делать ежедневно для обеспечения максимальной согласованности данных подсистем после восстановления.
* Резервные копии хранятся в директории **/tmp/backup**, но она может быть изменена по желанию администратора.

Резервное копирование контроллера домена
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для выполнения резервного копирования контроллера домена необходимо перейти на рабочую станцию, которая выполняет роль контроллера домена и выполнить скрипт:

.. code-block:: bash

   # !/usr/bin/env bash
   # Название директории для резервной копии формируется
   # из текущей даты и находится в папке /tmp/backup 
   now=$(date +"%d-%m-%Y")
   BACKUP_PATH=/tmp/backup/$now
   # Создание временной директории для резервных копий
   mkdir -p $BACKUP_PATH
   # Ограничение прав доступа к каталогу с резервными копиями
   chown root:root $BACKUP_PATH && chmod 700 $BACKUP_PATH
   # Создание резервной копии FreeIPA
   ipa-backup
   # Архивирование РК FreeIPA
   tar -zcvf $BACKUP_PATH/ipa.tar.gz /var/lib/ipa/backup
   # Очистка промежуточного бэкапа FreeIPA
   rm -rf /var/lib/ipa/backup/*
   # Остановка затрагиваемых бэкапом сервисов
   systemctl stop apache2 celery celerybeat rabbitmq-server postgresql aldpro-salt-minion
   # Архивирование БД PostgreSQL
   tar -zcvf $BACKUP_PATH/postgresql.tar.gz /var/lib/postgresql/
   # Архивирование RabbitMQ
   tar -zcvf $BACKUP_PATH/rabbitmq.tar.gz /var/lib/rabbitmq/mnesia/
   # Архивирование директории ipa-client
   tar -zcvf $BACKUP_PATH/ipa-client.tar.gz /var/lib/ipa-client/
   # Архивирование логов
   tar -zcvf $BACKUP_PATH/log.tar.gz --exclude=faillog --exclude=lastlog /var/log/
   # Архивирование директории etc
   tar -zcvf $BACKUP_PATH/etc.tar.gz /etc/
   # Архивирование директории samba
   tar -zcvf $BACKUP_PATH/samba.tar.gz /var/lib/samba
   # Запуск затрагиваемых бэкапом сервисов
   systemctl start apache2 celery celerybeat rabbitmq-server postgresql aldpro-salt-minion

Реплики - это равноправные серверы, не требующие отдельных условий для резервного копирования. Для их копирования используются команды, аналогичные командам для резервного копирования контроллера домена.

Резервное копирование подсистемы «Журналирование»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для выполнения резервного копирования подсистемы «Журналирование» необходимо перейти на рабочую станцию, которая выполняет функцию сервера журналирования событий и выполнить скрипт:

.. code-block:: bash

   # !/usr/bin/env bash
   # Название директории для резервной копии формируется
   # из текущей даты и находится в папке /tmp/backup
   now=$(date +"%d-%m-%Y")
   BACKUP_PATH=/tmp/backup/$now
   # Создание временной директории для резервных копий
   mkdir -p $BACKUP_PATH
   # Ограничение прав доступа к каталогу с резервными копиями
   chown root:root $BACKUP_PATH && chmod 700 $BACKUP_PATH
   # Архивирование логов
   tar -zcvf $BACKUP_PATH/log.tar.gz --exclude=faillog --exclude=lastlog /var/log/
   # Архивирование директории etc
   tar -zcvf $BACKUP_PATH/etc.tar.gz /etc/
   # Архивирование директории ipa-client
   tar -zcvf $BACKUP_PATH/ipa-client.tar.gz /var/lib/ipa-client/
   
Резервное копирование подсистемы «Сервер Печати»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для выполнения резервного копирования подсистемы «Сервер Печати» необходимо перейти на рабочую станцию, которая выполняет функцию сервера печати и выполнить скрипт:

.. code-block:: bash

   # !/usr/bin/env bash
   # Название директории для резервной копии формируется
   # из текущей даты и находится в папке /tmp/backup
   now=$(date +"%d-%m-%Y")
   BACKUP_PATH=/tmp/backup/$now
   # Создание временной директории для резервных копий
   mkdir -p $BACKUP_PATH
   # Ограничение прав доступа к каталогу с резервными копиями
   chown root:root $BACKUP_PATH && chmod 700 $BACKUP_PATH
   # Остановка затрагиваемых бэкапом сервисов
   systemctl stop cups aldpro-salt-minion
   # Архивирование директории ipa-client
   tar -zcvf $BACKUP_PATH/ipa-client.tar.gz /var/lib/ipa-client/
   # Архивирование логов
   tar -zcvf $BACKUP_PATH/log.tar.gz --exclude=faillog --exclude=lastlog /var/log/
   # Архивирование директории etc
   tar -zcvf $BACKUP_PATH/etc.tar.gz /etc/
   # Запуск затрагиваемых бэкапом сервисов
   systemctl start cups aldpro-salt-minion

Резервное копирование подсистемы «Динамическая настройка узла DHCP»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для выполнения резервного копирования подсистемы «Динамическая настройка узла DHCP» необходимо перейти на рабочую станцию, которая выполняет функцию сервера DHCP и выполнить скрипт:

.. code-block:: bash

   # !/usr/bin/env bash
   # Название директории для резервной копии формируется
   # из текущей даты и находится в папке /tmp/backup
   now=$(date +"%d-%m-%Y")
   BACKUP_PATH=/tmp/backup/$now
   # Создание временной директории для резервных копий
   mkdir -p $BACKUP_PATH
   # Ограничение прав доступа к каталогу с резервными копиями
   chown root:root $BACKUP_PATH && chmod 700 $BACKUP_PATH
   # Архивирование директории ipa-client
   tar -zcvf $BACKUP_PATH/ipa-client.tar.gz /var/lib/ipa-client/
   # Архивирование логов
   tar -zcvf $BACKUP_PATH/log.tar.gz --exclude=faillog --exclude=lastlog /var/log/
   # Архивирование директории etc
   tar -zcvf $BACKUP_PATH/etc.tar.gz /etc/

Резервное копирование подсистемы «Сервер Мониторинга»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для выполнения резервного копирования подсистемы «Сервер Мониторинга» необходимо перейти на рабочую станцию, которая выполняет функцию сервера мониторинга и выполнить скрипт:

.. code-block:: bash

   # !/usr/bin/env bash
   # Название директории для резервной копии формируется
   # из текущей даты и находится в папке /tmp/backup
   now=$(date +"%d-%m-%Y")
   BACKUP_PATH=/tmp/backup/$now
   # Создание временной директории для резервных копий
   mkdir -p $BACKUP_PATH
   # Ограничение прав доступа к каталогу с резервными копиями
   chown root:root $BACKUP_PATH && chmod 700 $BACKUP_PATH
   # Остановка затрагиваемых бэкапом сервисов
   systemctl stop apache2 zabbix-agent zabbix-server postgresql aldpro-salt-minion
   # Архивирование директории ipa-client
   tar -zcvf $BACKUP_PATH/ipa-client.tar.gz /var/lib/ipa-client/
   # Архивирование логов
   tar -zcvf $BACKUP_PATH/log.tar.gz --exclude=faillog --exclude=lastlog /var/log/
   # Архивирование директории etc
   tar -zcvf $BACKUP_PATH/etc.tar.gz /etc/
   # Архивирование zabbix
   tar -zcvf $BACKUP_PATH/zabbix.tar.gz /usr/share/zabbix/
   # Архивирование БД PostgreSQL
   tar -zcvf $BACKUP_PATH/postgresql.tar.gz /var/lib/postgresql/
   # Запуск затрагиваемых бэкапом сервисов
   systemctl start apache2 zabbix-agent zabbix-server postgresql aldpro-salt-minion

Резервное копирование подсистемы «Установка ОС по сети TFTP + PXE»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для выполнения резервного копирования подсистемы «Установка ОС по сети TFTP + PXE» необходимо перейти на рабочую станцию, которая выполняет функцию сервера установки ОС по сети и выполнить скрипт:

.. code-block:: bash

   # !/usr/bin/env bash
   # Название директории для резервной копии формируется
   # из текущей даты и находится в папке /tmp/backup
   now=$(date +"%d-%m-%Y")
   BACKUP_PATH=/tmp/backup/$now
   # Создание временной директории для резервных копий
   mkdir -p $BACKUP_PATH
   # Ограничение прав доступа к каталогу с резервными копиями
   chown root:root $BACKUP_PATH && chmod 700 $BACKUP_PATH
   # Остановка затрагиваемых бэкапом сервисов
   systemctl stop apache2 postgresql aldpro-salt-minion
   # Архивирование PostgreSQL
   tar -zcvf $BACKUP_PATH/postgresql.tar.gz /var/lib/postgresql/
   # Архивирование логов
   tar -zcvf $BACKUP_PATH/log.tar.gz --exclude=faillog --exclude=lastlog /var/log/
   # Архивирование директории etc
   tar -zcvf $BACKUP_PATH/etc.tar.gz /etc/
   # Архивирование директории ipa-client
   tar -zcvf $BACKUP_PATH/ipa-client.tar.gz /var/lib/ipa-client/
   # Архивирование директории tftp
   tar -zcvf $BACKUP_PATH/tftp.tar.gz /var/www/tftp/
   # Запуск затрагиваемых бэкапом сервисов
   systemctl start apache2 postgresql aldpro-salt-minion

Резервное копирование подсистемы «Сетевой Репозиторий»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для выполнения резервного копирования подсистемы «Сетевой Репозиторий» необходимо перейти на рабочую станцию, которая выполняет функцию сервера сетевых репозиториев ПО и выполнить скрипт:

.. code-block:: bash

   # !/usr/bin/env bash
   # Название директории для резервной копии формируется
   # из текущей даты и находится в папке /tmp/backup
   now=$(date +"%d-%m-%Y")
   BACKUP_PATH=/tmp/backup/$now
   # Создание временной директории для резервных копий
   mkdir -p $BACKUP_PATH
   # Ограничение прав доступа к каталогу с резервными копиями
   chown root:root $BACKUP_PATH && chmod 700 $BACKUP_PATH
   # Остановка затрагиваемых бэкапом сервисов
   systemctl stop apache2 postgresql rabbitmq-server aldpro-salt-minion
   # Архивирование БД PostgreSQL
   tar -zcvf $BACKUP_PATH/postgresql.tar.gz /var/lib/postgresql/
   # Архивирование данных брокера очередей RabbitMQ
   tar -zcvf $BACKUP_PATH/rabbitmq.tar.gz /var/lib/rabbitmq/mnesia/
   # Архивирование логов
   tar -zcvf $BACKUP_PATH/log.tar.gz --exclude=faillog --exclude=lastlog /var/log/
   # Архивирование директории etc
   tar -zcvf $BACKUP_PATH/etc.tar.gz /etc/
   # Архивирование директории ipa-client
   tar -zcvf $BACKUP_PATH/ipa-client.tar.gz /var/lib/ipa-client/
   # Архивирование директории repo/storage
   tar -zcvf $BACKUP_PATH/storage.tar.gz /opt/rbta/aldpro/repo/storage/
   # Архивирование домашнего каталога учетной записи repo
   tar -zcvf $BACKUP_PATH/repo.tar.gz /var/lib/repo/
   # Запуск бэкапируемых сервисов
   systemctl start apache2 postgresql rabbitmq-server aldpro-salt-minion

Резервное копирование подсистемы «Общий доступ к файлам»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для выполнения резервного копирования подсистемы «Общий доступ к файлам» необходимо перейти на рабочую станцию, которая выполняет функцию сервера общего доступа по сети и выполнить скрипт:

.. code-block:: bash

   # !/usr/bin/env bash
   # Название директории для резервной копии формируется
   # из текущей даты и находится в папке /tmp/backup
   now=$(date +"%d-%m-%Y")
   BACKUP_PATH=/tmp/backup/$now
   # Создание временной директории для резервных копий
   mkdir -p $BACKUP_PATH
   # Ограничение прав доступа к каталогу с резервными копиями
   chown root:root $BACKUP_PATH && chmod 700 $BACKUP_PATH
   # Остановка затрагиваемых бэкапом сервисов
   systemctl stop aldpro-salt-minion
   # Архивирование логов
   tar -zcvf $BACKUP_PATH/log.tar.gz --exclude=faillog --exclude=lastlog /var/log/
   # Архивирование директории etc
   tar -zcvf $BACKUP_PATH/etc.tar.gz /etc/
   # Архивирование директории ipa-client
   tar -zcvf $BACKUP_PATH/ipa-client.tar.gz /var/lib/ipa-client/
   # Архивирование директории /opt/samba_shares/
   tar -zcvf $BACKUP_PATH/samba.tar.gz /opt/samba_shares/
   # Запуск затрагиваемых бэкапом сервисов
   systemctl start aldpro-salt-minion

Восстановление
~~~~~~~~~~~~~~

* Раздел состоит из перечня скриптов восстановления каждой подсистемы (сервера).
* Требования к последовательности запуска скриптов восстановления отсутствуют.
* Допустимо выборочное восстановление подсистем (серверов).
* Восстанавливать КД из резервной копии рекомендуется только в случае отсутствия реплик.
* Для восстановления первого КД рекомендуется прибегнуть к инструкции :ref:`ref_domain-exit`.
* В случае сбоя оборудования на одном из КД, рекомендуется прибегнуть к **Руководство Администратора. Часть 1** раздел **Установка резервного контроллера домена**.
* При восстановлении КД на новом оборудовании, необходимо пересоздавать двусторонние доверительные отношения.
* Восстановление желательно производить на том же оборудовании с которого сделана резервная копия.
* Восстановление скриптом на том же оборудовании желательно проводить без установленного пакета **fly**, если пакет установлен, необходимо исключить восстановление каталога **/etc**.
* После восстановления, в индивидуальных случаях может понадобиться назначение прав с помощью команды ``chown``.

Список важных директорий **/etc** для полноценного восстановления функциональности контроллера домена состоит из следующих каталогов и файлов:

* **/etc/sssd** — параметры локального кэша, схемы домена и методы **NSS** / **PAM** интеграции;
* **/etc/ldap** — настройки **LDAP**-клиента и параметры взаимодействия с **FreeIPA** / **Directory Server**;
* **/etc/dirsrv** — конфигурация **Directory Server**;
* **/etc/aldpro** — параметры **ALD Pro**;
* **/etc/aldpro-salt** — конфигурация **salt-minion**;
* **/etc/pam.d** — обработчики авторизации, правила входа в систему;
* **/etc/systemd** — юниты **ALD Pro**, **LDAP**, **Kerberos** и вспомогательных служб;
* **/etc/bind** — **DNS**-настройки, зоны, ключи;
* **/etc/apache2** — конфигурации веб-интерфейса, **SSL**, прокси-настройки **ALD Pro** и **FreeIPA**;
* **/etc/krb5* **— критические файлы и директории **Kerberos**;
* **/etc/samba** — параметры **smbd**.

Директории, восстановление которых необязательно:

* **/opt/rbta** — данный каталог автоматически разворачивается при установке и настройке КД;
* **/var/log** — бэкапировать полезно (для расследования инцидентов, аудита и диагностики), однако, для восстановления работоспособности КД не требуется.

Действия после восстановления конфигураций:

После копирования необходимых директорий из резервной копии и перезагрузки необходимо на КД получить билет **kerberos** и обновить сертификаты **freeipa**. Для этого нужно войти под учетной записью администратора с правами **root**:

.. code-block:: bash
   
   kinit admin
   ipa-certupdate

Мандатные метки переносить вручную не требуется. Система корректно восстанавливает их из присвоенной файловой структуры при копировании.

Дополнительные действия по восстановлению Глобального Каталога и Модуля Синхронизации не требуются. При наличии перечисленных директорий компоненты восстанавливаются и работают штатно.

.. attention::

   Все подсистемы устанавливаются только на клиентские компьютеры. Запрещено устанавливать две подсистемы на один компьютер. Версия ОС и установленных пакетов должна быть идентична версии ОС, на которой работала подсистема.

При восстановлении данных через **RuBackup** на одном из контроллеров домена выполняется авторитативное восстановление. В этом случае восстанавливаемый контроллер домена получает новое значение генератора **CSN** и прекращает участие в репликации. Чтобы завершить восстановление домена, необходимо выполнить реинициализацию остальных контроллеров. Используйте команду:

.. code-block:: bash
   
   ipa-replica-manage re-initialize --from <имя_восстановленного_контроллера> 

После реинициализации все контроллеры скопируют базу данных с восстановленного контроллера, включая новое значение генератора **CSN**, поэтому репликация в домене восстановится.

.. attention::
   
   Все изменения, внесённые в домен после создания резервной копии, будут утеряны.

.. _restoring_dc:

Восстановление контроллера домена
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для восстановления контроллера домена с использованием резервной копии небходимо соблюдение следующих условий:

* Имя и адрес компьютера, на котором будет производиться восстановление КД, должно совпадать с именем и адресом компьютера, с которого была сделана резервная копия.

* Версия ОС и версия обновления ОС на компьютере, на котором будет восстановлен КД, должны быть идентичны тем, что были установлены на компьютере, с которого сделана резервная копия.

Возможные причины восстановления КД:

* В домене только один рабочий КД, на котором необходимо откатить данные на момент создания резервной копии. В таком случае, нужно воспользоваться скриптом для восстановления ниже. **Не рекомендуется в ALD Pro!**

* В домене один из КД (реплика) вышел из строя. КД расположен удаленно, реплика выполняется по расписанию и/или возник обрыв связи с другими КД на неопределенный срок. Это сценарий частного случая восстановления в котором рассмотрим восстановление на другом оборудовании, в соответствии с выполненными условиями выше.

При восстановлении необходимо исключить конфигурационный файл **fstab** в директории **/etc** с помощью ключа ``--exclude``.

Так как домашние каталоги не резервируется, может понадобиться выдача прав на каталог администратора, а так же на другие каталоги:

Примеры команд:

.. code-block:: bash
   
   chown -R admin:admins /home/admin
   chown -R postgres:postgres /var/lib/postgresql/
   chown postgres /var/log/postgresql/postgresql-11-main.log 

Произвести инициализацию работающих КД с восстановленным при появлении связи.

Скрипт для восстановления КД:

.. code-block:: bash

   # !/bin/bash
   # Перейти в директорию с резервными копиями
   cd /tmp/backup/{дата создания бэкапа}
   # Разархивирование РК IPA
   tar -C "/" -xvf ipa.tar.gz
   # Восстановление IPA из РК
   ipa-restore /var/lib/ipa/backup/ipa-full-YOUR_BACKUP_DATE
   # Остановка затрагиваемых восстановлением сервисов
   systemctl stop apache2 celery celerybeat rabbitmq-server postgresql aldpro-salt-minion
   # Чистим кеш у sssd service
   rm -f /var/lib/sss/db/*
   # Восстановление БД Postgresql
   tar -C "/" -xvf postgresql.tar.gz
   # Восстановление RabbitMQ
   tar -C "/" -xvf rabbitmq.tar.gz
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Восстановление директорий и файлов ALD Pro из архива etc
   tar -xf etc.tar.gz
   cp -rpf etc/sssd etc/ldap etc/dirsrv etc/aldpro etc/aldpro-salt etc/pam.d etc/systemd etc/bind etc/apache2 etc/krb5* etc/samba /etc/
   # Восстановление директории samba
   tar -C "/" -xvf samba.tar.gz
   # Восстановление ipa-client
   tar -C "/" -xvf ipa-client.tar.gz
   # Перезагрузка
   reboot

* ``/tmp/backup`` - путь к месту хранения резервной копии, может быть изменен на усмотрение администратора.

При выполнении скрипта ``backup_dc.sh`` архивируется бэкап, имя которого необходимо впоследствии подставить в скрипт восстановления. Имя бэкапа хранится в архиве. Если имя не указать, возникнет ошибка, но при этом бэкап разархивируется в ``/var/lib/ipa/backup/``, по этому пути также можно будет найти имя бэкапа и подставить в скрипт для повторного выполнения.

Команда для просмотра содержимого архива:

.. code-block:: bash
   
   tar -ztvf /tmp/backup/{дата создания бэкапа}/ipa.tar.gz
 
Команда для переинициализации репликации:

.. code-block:: bash
   
   ipa-replica-manage re-initialize --from dc-1.ald.company.lan

Восстановление подсистемы «Журналирование»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Восстановить подсистему необходимо, потому что:

* Производились работы в конфигурационных файлах, после чего подсистема перестала работать. Для восстановления подсистемы необходимо воспользоваться скриптом ниже.

* Сервер, на котором располагалась подсистема, вышел из строя и нет возможности восстановить его работу. Для восстановления подсистемы необходимо завести в домен сервер с именем и адресом, идентичными тем, что были у сервера, вышедшего из строя. С помощью команды ``aldpro-roles --uid --action install`` установить подсистему на новый сервер. Запустить команду для получения переменных конфигурации для подсистемы ``aldpro-salt-call aldpro_subsystems.build_audit_role_pillar``. Запустить команду для генерации конфигурационных файлов из полученных переменных ``aldpro-salt-call state.apply roles.audit``. Воспользоваться скриптом для восстановления ниже. 

Скрипт для восстановления подсистемы «Журналирование»:

.. code-block:: bash

   # !/bin/bash
   # Переход в директорию с резервными копиями
   cd /tmp/backup/
   # Остановка затрагиваемых восстановлением сервисов
   systemctl stop syslog-ng aldpro-salt-minion
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Перезагрузка
   reboot

Восстановление подсистемы «Сервер Печати» 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Восстановить подсистему необходимо, потому что:

* Производились работы в конфигурационных файлах, после чего подсистема перестала работать. Для восстановления подсистемы необходимо воспользоваться скриптом ниже.

* Сервер, на котором располагалась подсистема, вышел из строя и нет возможности восстановить его работу. Для восстановления подсистемы необходимо завести в домен сервер с именем и адресом, идентичными тем, что были у сервера, вышедшего из строя. С помощью команды ``aldpro-roles --uid --action install`` установить подсистему на новый сервер. Запустить команду для получения переменных конфигурации для подсистемы ``aldpro-salt-call aldpro_subsystems.build_cups_role_pillar``. Запустить команду для генерации конфигурационных файлов из полученных переменных ``aldpro-salt-call state.apply roles.cups``. Воспользоваться скриптом для восстановления ниже. 

Скрипт для восстановления подсистемы «Сервер Печати»:

.. code-block:: bash

   # !/bin/bash
   # Переход в директорию с резервными копиями
   cd /tmp/backup/
   # Остановка затрагиваемых бэкапом сервисов
   systemctl stop cups aldpro-salt-minion
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Восстановление директории etc
   tar -C "/" -xvf etc.tar.gz
   # Восстановление ipa-client
   tar -C "/" -xvf ipa-client.tar.gz
   # Перезагрузка
   reboot

.. attention::

   При восстановлении указанным способом информация в **LDAP** и на сервере может отличаться. Чтобы избежать этого, после восстановления системы необходимо выполнить команду:

.. code-block:: bash

   aldpro-roles --subsystem_settings cups

Восстановление подсистемы «Динамическая настройка узла DHCP»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Восстановить подсистему необходимо, потому что:

* Производились работы в конфигурационных файлах, после чего подсистема перестала работать. Для восстановления подсистемы необходимо воспользоваться скриптом ниже.

* Сервер, на котором располагалась подсистема, вышел из строя и нет возможности восстановить его работу. Для восстановления подсистемы необходимо завести в домен сервер с именем и адресом, идентичными тем, что были у сервера, вышедшего из строя. С помощью команды ``aldpro-roles --uid --action install`` установить подсистему на новый сервер. Запустить команду для получения переменных конфигурации для подсистемы ``aldpro-salt-call aldpro_subsystems.build_dhcp_role_pillar``. Запустить команду для генерации конфигурационных файлов из полученных переменных ``aldpro-salt-call state.apply roles.dhcp``. Воспользоваться скриптом для восстановления ниже. 

Скрипт для восстановления подсистемы «Динамическая настройка узла DHCP»:

.. code-block:: bash

   # !/bin/bash
   # Перейти в директорию с резервными копиями
   cd /tmp/backup/
   # Остановка затрагиваемых восстановлением сервисов
   systemctl stop isc-dhcp-server aldpro-salt-minion
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Восстановление директории  etc
   tar -C "/" -xvf etc.tar.gz
   # Восстановление  ipa-client
   tar -C "/" -xvf ipa-client.tar.gz
   # Перезагрузка
   reboot

.. attention::

   При восстановлении указанным способом информация в **LDAP** и на сервере может отличаться. Чтобы избежать этого, после восстановления системы необходимо выполнить команду:

.. code-block:: bash

   aldpro-roles --subsystem_settings dhcp

Восстановление подсистемы «Сервер Мониторинга»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Восстановить подсистему необходимо, потому что:

* Производились какие-то работы, после чего подсистема перестала работать. Для восстановления подсистемы необходимо воспользоваться скриптом ниже.

* Сервер, на котором располагалась подсистема, вышел из строя и нет возможности восстановить его работу. Для восстановления подсистемы необходимо завести в домен сервер с именем и адресом, идентичными тем, что были у сервера, вышедшего из строя. С помощью команды ``aldpro-roles --uid --action install`` установить подсистему на новый сервер. Воспользоваться скриптом для восстановления ниже. 

Скрипт для восстановления подсистемы «Сервер Мониторинга»:

.. code-block:: bash

   # !/bin/bash
   # Перейти в директорию с резервными копиями
   cd /tmp/backup/
   # Остановка затрагиваемых бэкапом сервисов
   systemctl stop apache2 zabbix-agent zabbix-server postgresql aldpro-salt-minion
   # Восстановление БД PostgreSQL
   tar -C "/" -xvf postgresql.tar.gz
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Восстановление директории zabbix
   tar -C "/" -xvf zabbix.tar.gz
   # Перезагрузка
   reboot

* Пароль для восстановления базы данных - ``postgres``.

Восстановление подсистемы «Установка ОС по сети TFTP + PXE»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Восстановить подсистему необходимо, потому что:

* Производились работы в конфигурационных файлах, после чего подсистема перестала работать. Для восстановления подсистемы «Установка ОС по сети TFTP + PXE» необходимо воспользоваться скриптом:

.. code-block:: bash

   # !/bin/bash
   # Переход в директорию с резервными копиями
   cd /tmp/backup
   # Остановка затрагиваемых восстановлением сервисов
   systemctl stop apache2 tftpd-hpa postgresql aldpro-salt-minion
   # Восстановление БД PostgreSQL
   tar -C "/" -xvf postgresql.tar.gz
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Восстановление директории etc
   tar -C "/" -xvf etc.tar.gz
   # Восстановление ipa-client
   tar -C "/" -xvf ipa-client.tar.gz
   # Восстановление директории tftp
   tar -C "/" -xvf tftp.tar.gz
   # Перезагрузка
   reboot

* Сервер, на котором располагалась подсистема, вышел из строя и нет возможности восстановить его работу. Для восстановления подсистемы необходимо завести в домен сервер с именем и адресом, идентичными тем, что были у сервера, вышедшего из строя. С помощью команды ``aldpro-roles --uid --action install`` установить подсистему на новый сервер. Воспользоваться скриптом для восстановления подсистемы «Установка ОС по сети TFTP + PXE»:

.. code-block:: bash

   # !/bin/bash
   # Переход в директорию с резервными копиями
   cd /tmp/backup
   # Остановка затрагиваемых восстановлением сервисов
   systemctl stop apache2 tftpd-hpa postgresql aldpro-salt-minion
   # Восстановление БД PostgreSQL
   tar -C "/" -xvf postgresql.tar.gz
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Восстановление директории tftp
   tar -C "/" -xvf tftp.tar.gz
   # Перезагрузка
   reboot
   
.. attention::

   При восстановлении указанным способом информация в **LDAP** и на сервере может отличаться. Чтобы избежать этого, после восстановления системы необходимо выполнить команду:

.. code-block:: bash

   aldpro-roles --subsystem_settings os

Восстановление подсистемы «Сетевой Репозиторий»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Восстановить подсистему необходимо, потому что:

* Производились работы с конфигурационным файлом, после чего подсистема перестала работать. Для восстановления подсистемы «Сетевой Репозиторий» необходимо воспользоваться скриптом:

.. code-block:: bash

   # !/bin/bash
   # Переход в директорию с резервными копиями
   cd /tmp/backup
   # Остановка затрагиваемых восстановлением сервисов
   systemctl stop apache2 postgresql rabbitmq-server aldpro-salt-minion
   # Восстановление БД PostgreSQL
   tar -C "/" -xvf postgresql.tar.gz
   # Восстановление RabbitMQ
   tar -C "/" -xvf rabbitmq.tar.gz
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Восстановление директории etc
   tar -C "/" -xvf etc.tar.gz
   # Восстановление ipa-client
   tar -C "/" -xvf ipa-client.tar.gz
   # Восстановление директории с репозиториями
   t ar -C "/" -xvf storage.tar.gz
   # Перезагрузка  
   reboot

* Сервер, на котором располагалась подсистема, вышел из строя и нет возможности восстановить его работу. Для восстановления подсистемы необходимо завести в домен сервер с именем и адресом, идентичными тем, что были у сервера, вышедшего из строя. С помощью команды ``aldpro-roles --uid --action install`` установить подсистему на новый сервер. Запустить команду для получения переменных конфигурации для подсистемы ``aldpro-salt-call aldpro_subsystems.build_repo_role_pillar``. Запустить команду для генерации конфигурационных файлов из полученных переменных ``aldpro-salt-call state.apply roles.repo``. Воспользоваться скриптом для восстановления ниже. 

Скрипт для восстановления подсистемы «Сетевой Репозиторий»:

.. code-block:: bash

   # !/bin/bash
   # Переход в директорию с резервными копиями
   cd /tmp/backup
   # Остановка затрагиваемых восстановлением сервисов
   systemctl stop apache2 postgresql rabbitmq-server aldpro-salt-minion
   # Восстановление БД PostgreSQL
   tar -C "/" -xvf postgresql.tar.gz
   # Восстановление RabbitMQ
   tar -C "/" -xvf rabbitmq.tar.gz
   # Восстановление директории с репозиториями
   tar -C "/" -xvf storage.tar.gz
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Перезагрузка
   reboot

Восстановление подсистемы «Общий доступ к файлам»
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Восстановить подсистему необходимо, потому что:

* Производились работы в конфигурационных файлах, после чего подсистема перестала работать. Для восстановления подсистемы «Общий доступ к файлам» необходимо воспользоваться скриптом:

.. code-block:: bash

   # !/bin/bash
   # Переход в директорию с резервными копиями
   cd /tmp/backup
   # Остановка затрагиваемых восстановлением сервисов
   systemctl stop smbd nmbd aldpro-salt-minion 
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Восстановление директории etc
   tar -C "/" -xvf etc.tar.gz
   # Восстановление ipa-client
   tar -C "/" -xvf ipa-client.tar.gz
   # Восстановление общих директорий samba
   tar -C "/" -xvf samba.tar.gz
   # Перезагрузка 
   reboot  

* Сервер, на котором располагалась подсистема, вышел из строя и нет возможности восстановить его работу. Для восстановления подсистемы необходимо завести в домен сервер с именем и адресом, идентичными тем, что были у сервера, вышедшего из строя. С помощью команды ``aldpro-roles --uid --action install`` установить подсистему на новый сервер. Запустить команду для получения переменных конфигурации для подсистемы ``aldpro-salt-call aldpro_subsystems.build_smb_role_pillar``. Запустить команду для генерации конфигурационных файлов из полученных переменных ``aldpro-salt-call state.apply roles.smb``. Воспользоваться скриптом для восстановления ниже. 

Скрипт для восстановления подсистемы «Общий доступ к файлам»:

.. code-block:: bash

   # !/bin/bash
   # Переход в директорию с резервными копиями
   cd /tmp/backup
   # Остановка затрагиваемых восстановлением сервисов
   systemctl stop smbd nmbd aldpro-salt-minion
   # Восстановление общих директорий samba
   tar -C "/" -xvf samba.tar.gz
   # Восстановление логов
   tar -C "/" -xvf log.tar.gz
   # Перезагрузка
   reboot

.. attention::

   При восстановлении указанным способом информация в **LDAP** и на сервере может отличаться. Чтобы избежать этого, после восстановления системы необходимо выполнить команду:

.. code-block:: bash

   aldpro-roles --subsystem_settings smb

Особенности интеграции с RuBackup
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

При копировании и восстановлении данных с помощью ``rubackup-client`` или непосредственно утилитами ``ipa-backup/ipa-restore`` из-за перезапуска Служб Каталога на контроллерах перестает работать WEB-сервис ``apache2``, обеспечивающий доступ к консоли управления **ALD Pro**. 

Для восстановления доступа к консоли управления **ALD Pro** нужно запустить сервис ``apache2``.

При восстановлении данных из ``rubackup manager`` необходимо установить ползунок **Восстановить на целевом ресурсе**. Без этой опции восстановление данных каталога выполнено не будет.

.. figure:: Vosstanovit`_na_resurse.png
   :name: Vosstanovit`_na_resurse.png